package com.yxw.yx_hotel.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yxw.yx_hotel.dto.DeptDTO;
import com.yxw.yx_hotel.dto.DeptIdsDTO;
import com.yxw.yx_hotel.dto.DeptQueryDTO;
import com.yxw.yx_hotel.dto.SubsDTO;
import com.yxw.yx_hotel.entity.YxCsDeptEntity;
import com.yxw.yx_hotel.vo.DeptTreeItemVO;
import com.yxw.yx_hotel.vo.DeptVO;

import java.util.List;

/**
 * 部门管理Service接口
 * 
 * @author xiexuxin
 * @date 2023-09-14
 */
public interface IDeptService extends IService<YxCsDeptEntity> {

    /**
     * 添加部门
     * @param deptDTO
     */
    void addNewDept(DeptDTO deptDTO);

    /**
     * 添加子部门
     * @param subsDTO
     */
    void addNewSubdivision(SubsDTO subsDTO);

    /**
     * 删除部门
     * @param idsDTO
     */
    void deleteByDeptIds(DeptIdsDTO idsDTO);

    /**
     * 修改部门
     * @param deptDTO
     */
    void updateInfoById(DeptDTO deptDTO);

    /**
     * 根据Id查询部门详情
     *
     * @param deptId
     * @return
     */
     DeptVO selectByDeptId(Long deptId);

    /**
     * 查询部门列表
     * @return
     */
    List<DeptVO> deptList();

    /**
     * 获取部门下拉列表
     * @param deptVOList
     * @return
     */
    List<DeptTreeItemVO> buildDeptTreeList(List<DeptVO> deptVOList);

    /**
     * 根据查询条件返回列表
     * @param deptQueryDTO
     * @return
     */
    List<DeptVO> getDeptList(DeptQueryDTO deptQueryDTO);

    /**
     * 将列表转化成树
     * @param deptVOList
     * @return
     */
    List<DeptVO> getDeptTree(List<DeptVO> deptVOList);

}
